2020-2021 Sunseeker Telemetry and Lighting System
flashctl_ex1_writeToInfoB.c
Go to the documentation of this file.
1 /* --COPYRIGHT--,BSD
2  * Copyright (c) 2017, Texas Instruments Incorporated
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * * Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  *
12  * * Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in the
14  * documentation and/or other materials provided with the distribution.
15  *
16  * * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  * --/COPYRIGHT--*/
32 //*****************************************************************************
55 //********************************************************************************
56 #include "driverlib.h"
57 
58 //*****************************************************************************
59 //
60 //INFOB address in flash into which calibration data would be written
61 //
62 //*****************************************************************************
63 #define INFOB_START (0x1900)
64 
65 //*****************************************************************************
66 //
67 //Dummy char array of 'calibration data' - to be stored in flash
68 //
69 //*****************************************************************************
70 uint8_t calibration_data_char[16] = {0x00,
71  0x01,
72  0x02,
73  0x03,
74  0x04,
75  0x05,
76  0x06,
77  0x07,
78  0x08,
79  0x09,
80  0x10,
81  0x11,
82  0x12,
83  0x13,
84  0x14,
85  0x15};
86 //*****************************************************************************
87 //
88 //Dummy int array of 'calibration data' - to be stored in flash
89 //
90 //*****************************************************************************
91 uint16_t calibration_data_int[8] = {0x1617,
92  0x1819,
93  0x2021,
94  0x2223,
95  0x2425,
96  0x2627,
97  0x2829,
98  0x3031};
99 //*****************************************************************************
100 //
101 //Dummy long array of 'calibration data' - to be stored in flash
102 //
103 //*****************************************************************************
104 uint32_t calibration_data_long[4] = {0x35343332,
105  0x39383736,
106  0x43424140,
107  0x47464544};
108 
109 void main (void)
110 {
111  uint16_t status;
112 
113  WDT_A_hold(WDT_A_BASE);
114 
115  //Set P1.0 to output direction
116  GPIO_setAsOutputPin(
117  GPIO_PORT_P1,
118  GPIO_PIN0
119  );
120 
121  //Write calibration data to INFOB
122 
123  do
124  {
125  //Erase INFOB
126  FlashCtl_eraseSegment((uint8_t *)INFOB_START);
127  status = FlashCtl_performEraseCheck((uint8_t *)INFOB_START,
128  128
129  );
130  } while (status == STATUS_FAIL);
131 
132  //Write calibration data to INFOB
133  FlashCtl_write8(calibration_data_char,
134  (uint8_t *)INFOB_START,
135  16
136  );
137  FlashCtl_write16(calibration_data_int,
138  (uint16_t *)(INFOB_START + 16),
139  8
140  );
141  FlashCtl_write32(calibration_data_long,
142  (uint32_t *)(INFOB_START + 32),
143  4
144  );
145  FlashCtl_fillMemory32(0xBEEFBEEF,
146  (uint32_t *)(INFOB_START + 48),
147  (128 - 48) >> 2
148  );
149 
150  while (1)
151  {
152  //Toggle P1.0
153  GPIO_toggleOutputOnPin(
154  GPIO_PORT_P1,
155  GPIO_PIN0
156  );
157 
158  //Delay
159  __delay_cycles(1000000);
160  }
161 }
#define INFOB_START
uint32_t calibration_data_long[4]
void main(void)
uint8_t calibration_data_char[16]
uint16_t calibration_data_int[8]
#define STATUS_FAIL
Definition: hw_memmap.h:23
__delay_cycles(500000)
uint16_t status